1. Technical Field
The present invention relates to computer systems, and in particular, to systems and methods for coupling messages among networked computers.
2. Background Art
As computer use proliferates and computers become more powerful, there is a growing interest in the use of power management systems to minimize the power consumed by idle computers. The Advanced Control And Power Interface ("ACPI") sponsored by Intel, Microsoft, and Toshiba is an example of one such power management protocol (ACPI V.1 available at www.teleport.com/.about.acpi). A computer implementing ACPI, for example, transitions to a lower power consumption state ("low power state") at the behest of the local operating system when selected "idle" conditions are detected. In a networked computer, ACPI transitions the CPU and support logic of an idle computer to a power state providing the minimum power consistent with the role of the computer in network operations. This low power state typically leaves the computer's network controller, which couples the computer to the network medium, in a standby state to monitor the network for interesting "events". These events include, for example, incoming phone calls or message packets. When the network controller detects these events, it triggers the computer to transition to a higher power state in which CPU-implemented communications programs ("communication stack") respond to the call or message packet.
Often, the only action required by the computer once it is in the higher power state is to respond to a relatively simple status request. In the following discussion, "status request" refers to a message that seeks relatively low level information about the state of the computer. This information includes static information about the computer itself or information that is tracked as a matter of course when the CPU is operating. A well-known example of a status request is the IP echo request or Ping. IP echo requests are typically generated by servers running network administration software to determine if one or more targeted computers are connected to the network and in a functional state. A node is in a functional state when it is powered-on, independent of the current power state of the node. A computer receiving an echo request responds by generating a relatively simple response when the request is detected. In general, status requests may be used to check for the presence of computers on a network, gather statistics on network operations, monitor traffic at various nodes, and inventory equipment. Many status requests are sent periodically by network administration software to monitor the network's condition.
Despite the relatively simple nature of the information sought by status requests, the complete communications infrastructure of the computer is used to process and respond to these messages in many cases. For example, where the requesting and responding computers are on different networks, the responding computer relies on its communication infrastructure to generate a routable response to the status request. In particular, the CPU and other functional elements of the system implement the communication protocol stack necessary to read each request message and generate an appropriate response. These routines provide the routing information necessary to return the requested information to the node that originated the status request.
When a computer in a low power state receives a status request, the computer's network controller triggers the computer to transition to a power state in which the CPU and its supporting logic have sufficient power to operate. The CPU executes the communication routines that process the request and generate an appropriate response, before returning to low power state. Periodic status requests thus cycle an idle computer repeatedly between low and high power states. This reduces the amount of time the idle computer spends in low the power state, and the transition process itself consumes additional power. Processing such status queries can thus reduce the power efficiency of the computer and undermine the conservation strategy of the computer's power management system.
One possible solution to this power consumption problem is to add a communication stack to the network controller to process status requests when the CPU and its support logic are in a low power state. However, this approach adds substantial circuitry to the network controller. It also requires a relatively complex synchronization scheme to coordinate the communication stack in the network controller with the communication stack implemented by the CPU. The latter stack is still necessary for processing more complex messages. For these and other reasons, it is generally deemed impractical to provide an additional communication stack in the network controller.